home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / mac / LOGIC Apple II 5.25" Library - ProDOS / PRO015A.dsk / BBS.1.bas < prev    next >
BASIC Source File  |  2012-02-16  |  12KB  |  197 lines

  1. 10  ONERR  GOTO 3800
  2. 21  POKE 872,255: IF  PEEK(853) = 2  AND  PEEK(49183) <128  THEN  PRINT  CHR$(4);"PR#3"
  3. 30  GOSUB 3690: &  RECALL NM$:WD =  VAL( MID$ (NM$,83,3)) -1: HOME : POKE 813,255: POKE 34,5: POKE 35,20: &  RECALL NM$: VTAB 12: PRINT : GOTO 1240
  4. 100  IF MD = 0  THEN Z = 1: &  RETURN 
  5. 110  IF MM = 0  THEN  &  PRINT ,B$(8),: GOTO 1250
  6. 120  &  RETURN 
  7. 160  IF Z$ = ""  THEN 1250
  8. 170 Z =  VAL(Z$): IF Z >MM  OR Z <1  THEN  &  PRINT ,B$(9),: GOTO 1250
  9. 190  &  RETURN 
  10. 230  &  GOSUB 100: &  PRINT ,B$(64);: &  STR$3,NB$: &  INPUT Z$: &  GOSUB 160
  11. 240 F = 0: &  PRINT B$(27);: &  USRY: ON Y GOTO 250,260
  12. 250 F = 1
  13. 260 J = Z: &  GOSUB 380:Z = Z +W: IF Z < = MM  AND Z >0  THEN 260
  14. 270  GOTO 1240
  15. 310  IF  MID$ (M$(Z),80,1) < >"P"  THEN G = 1: &  RETURN 
  16. 315  IF  MID$ (NM$,22,20) =  MID$ (M$(Z),36,20)  THEN G = 1: &  RETURN 
  17. 320  &  GOSUB 1100: IF SL > = M2  THEN G = 1: &  RETURN 
  18. 330  IF  MID$ (NM$,22,20) =  MID$ (M$(Z),56,20)  THEN G = 1: &  RETURN 
  19. 340 G = 0: &  RETURN 
  20. 380  &  GOSUB 310: ON G GOTO 410: IF DP = 0  THEN  &  RETURN 
  21. 400  &  PRINT ,B$(10);Z;"  ";B$(20),: &  RETURN 
  22. 410  IF M$(Z) = ""  THEN  &  RETURN 
  23. 420  IF  MID$ (M$(Z),80,1) = "P"  THEN  &  PRINT ,B$(20);
  24. 430  IF  MID$ (M$(Z),81,1) = "P"  THEN  &  PRINT B$(78);
  25. 440 CC$ = ":": &  PRINT !,B$(10);Z;"  ";B$(11); MID$ (M$(Z),8,2);"/"; MID$ (M$(Z),10,2);"/"; MID$ (M$(Z),6,2);" ";B$(12); MID$ (M$(Z),12,2);CC$; MID$ (M$(Z),14,2)
  26. 460  &  END R: ON R GOTO 530,1250
  27. 470  &  PRINT !;B$(13);@ MID$ (M$(Z),16,20),B$(14);@ MID$ (M$(Z),36,20): &  END R: ON R GOTO 530,1250
  28. 475  IF NA% = 0  OR SL =  >M2  THEN  &  PRINT !;B$(15);@ MID$ (M$(Z),56,20);"  ";B$(16);@ MID$ (M$(Z),77,3)
  29. 480  &  END R: ON R GOTO 530,1250: &  PRINT : IF F < >1  THEN  &  RETURN 
  30. 500  &  PRINT B$(28);:B$ = "YNXQ" + CHR$(13)
  31. 510  &  GET Z$: &  SGNZ$: &  INTB$,Z$,R: ON R GOTO 520,530,550,550,520: GOTO 510
  32. 520 MK%(Z) = 1:P = 0
  33. 530  &  PRINT Z$: &  RETURN 
  34. 550  &  PRINT Z$: GOTO 1250
  35. 590  &  SCALE= HM: &  GOSUB 310: ON G GOTO 610: &  PRINT ,B$(10);Z;"  ";B$(20),: &  RETURN 
  36. 610  IF M$(Z) = ""  THEN  &  RETURN 
  37. 615 AL% = 1
  38. 620 F = 0: &  NEXT M$(Z),R: ON R = 1 GOTO 635:J = Z: &  GOSUB 380: ON R = 1 GOTO 630: &  PRINT  = HM:MK%(Z) = 0: &  END R: ON R GOTO 630,1250: IF AL% = 0  THEN  &  GOSUB 475
  39. 625  IF  MID$ (NM$,121,1) = "1"  THEN  &  PRINT !;B$(29);: &  END R: ON R GOTO 630,1250: &  GET Z$: &  PRINT ,,
  40. 630  &  RETURN 
  41. 635  &  PRINT ,B$(45),,: &  RETURN 
  42. 670  FOR I = 0 TO MX:L$(I) = "": NEXT :I$ = "":W$ = "":W% = 0:ED% = 0:L = 0: POKE 795,0:F = 0: PRINT FR$: POKE 813,255: &  RETURN 
  43. 710  &  AT P,R: IF R = 1  THEN  &  PRINT ,"Unit is not on line!",,: GOTO 1250
  44. 711  &  RETURN 
  45. 715  &  GOSUB 710: PRINT PF$;Z$: &  RETURN 
  46. 750 R = 0: FOR Z = 1 TO MM: IF  MID$ (M$(Z),1,5) > MID$ (NM$,93,5)  THEN R = Z:Z = MM
  47. 770  NEXT : IF R <1  THEN R = MM +1
  48. 775  IF NN% = 1  THEN  IF R >MM  THEN  &  PRINT ,B$(6),,: GOTO 1250
  49. 780 Z = R -BK%: IF Z <1  THEN Z = 1
  50. 785  IF Z >MM  THEN Z = Z -1: GOTO 785
  51. 790  &  RETURN 
  52. 830  IF M$(Z) = ""  THEN 860
  53. 840  &   NOT M$(Z),R:R =  VAL( MID$ (M$(Z),76,1)): IF R = 0  THEN LP = LP -1: GOTO 860
  54. 850 HP = HP -1
  55. 860  &  POP MM -Z,0,M$(Z):MM = MM -1: &  RETURN 
  56. 900  PRINT ST$;"FIL.MSG": &  RETURN 
  57. 940  IF MM = HL  AND AD = 1  THEN  &  PRINT ,B$(18),: GOTO 1060
  58. 950 X = 0
  59. 960  &  FREZ: IF Z >8  AND MM <HL  THEN  &  GOSUB 1040: &  RETURN 
  60. 970  IF AD = 1  THEN  &  PRINT ,B$(18),: GOTO 1060
  61. 980  IF X = 0  THEN  &  PRINT ,B$(19),
  62. 990 Z = 1
  63. 1000  IF Z >MM  THEN  &  GOSUB 1040: &  PRINT ,B$(18),: GOTO 1060
  64. 1010  IF  MID$ (M$(Z),81,1) = "P"  THEN Z = Z +1: GOTO 1000
  65. 1020  &  GOSUB 830:X = 1: GOTO 960
  66. 1040  IF X = 1  THEN  &  GOSUB 900: &  RETURN 
  67. 1050  &  RETURN 
  68. 1060  &  GOSUB 1040: IF  PEEK(793) = 1  THEN 4120
  69. 1065  GOTO 1240
  70. 1100 SL =  ASC( MID$ (NM$,80,1)) -64: &  RETURN 
  71. 1180  &  GOSUB 100: &  PRINT ,B$(44);: &  STR$3,NB$: &  INPUT Z$: &  GOSUB 160: &  PRINT ,B$(30),
  72. 1190 J = Z: &  GOSUB 590:Z = Z +C: IF Z < = MM  AND Z >0  THEN 1190
  73. 1200  &  RETURN 
  74. 1220 :
  75. 1240 T = T(L):M = M(L):B = B(L):A =  VAL( MID$ (NM$,81,1)):MT = MT(L)
  76. 1250  IF A = 0  AND MT = 1  THEN  &  SCALE= HM: PRINT BL$;"M.FIL."; PEEK(865);".";L;",A";HM:A = 5
  77. 1260  IF T < >1  THEN 1300
  78. 1270  IF MD = 0  THEN 1300
  79. 1280  IF MM = 0  THEN  &  PRINT B$(6);: GOTO 1300
  80. 1290  &  PRINT B$(7);MM;
  81. 1300  &  LIST A,S$(T),S$(M),S$(B),B$(0),T$(L),B$(1),C,S,TY,WH,NM,P:A =  VAL( MID$ (NM$,81,1)): IF C = 0  THEN  &  PRINT ,B$(2),: GOTO 1220
  82. 1330  IF S >127  THEN  &  PRINT ,B$(3),: GOTO 1220
  83. 1340  ON TY GOTO 1390,1790,2370,3190,3490
  84. 1390  ON WH GOTO 1410,1430,1450,1500,1520,1540,1560,1580,1620,1640,1680,1690,1710,1391,1551: GOTO 1250
  85. 1391  ONERR  GOTO 1395
  86. 1392  &  TANP,PH$:Z$ = PH$ +"/G.FIL." + STR$(NM) +",L$0FFF,TTXT,B":P = 0: &  PRINT ,,,
  87. 1394  &  SCALE= HM: &  SHLOAD : PRINT BL$;Z$;P;",A";HM: &  PRINT  = HM;: &  END R: ON R GOTO 1395,1395:P = P +4095: GOTO 1394
  88. 1395  &  ONERR  = ER: PRINT FR$: ONERR  GOTO 3800
  89. 1396  IF ER = 253  THEN 1480
  90. 1397  GOTO 1250
  91. 1410 A = 0: GOTO 1250
  92. 1430  &  GOSUB 100: POKE 795,L:L = NM: GOTO 1240
  93. 1450  &  PRINT ,B$(17);: &  USRZ: ON Z GOTO 1460,1250
  94. 1460  POKE 793,4: ONERR  GOTO 1480
  95. 1470  &  PRINT ,B$(99),,: &  FN 4,A
  96. 1480  &  FN 5,A:P =  PEEK(836): &  GOSUB 710: PRINT RN$;"LOG"
  97. 1500  &  PRINT ,B$(55): FOR I = 0 TO 5: POKE 790,45: &  STORE NM$: PRINT  CHR$(7);: POKE 790,45 +128: &  STORE NM$: PRINT  CHR$(7);: NEXT : POKE 790,45: &  STORE NM$: &  PRINT B$(57),: GOTO 1250
  98. 1520  &  GOSUB 710: PRINT RN$;"PRG.";NM
  99. 1540  &  PRINT ,B$(60),: GOTO 1250
  100. 1551  POKE 794,L: POKE 795,0: POKE 865,NM:Z$ = "BRD." + STR$(NM): &  GOSUB 715: PRINT RS$;"FIL.MSG":L = 0:W% = 0:ED% = 0: &  GOSUB 3770: &  GOSUB 1100: IF QR% < = SL  THEN 1240
  101. 1553  &  SCALE= HM: PRINT BL$;"MSG.0";",A";HM: &  PRINT ,B$(61),, = HM,: GOTO 1240
  102. 1560  &  SCALE= HM: &  TANP,PH$: PRINT BL$;PH$;"/MSG.";NM;",A";HM: &  PRINT ,B$(61),, = HM,: GOTO 1250: REM  READ MESSAGE
  103. 1580  POKE 794,L: POKE 795,0: POKE 865,NM:Z$ = "BRD." + STR$(NM): &  GOSUB 715: PRINT RS$;"FIL.MSG":L = 0:W% = 0:ED% = 0: &  GOSUB 3770: GOTO 1240
  104. 1600  &  GOSUB 710: POKE 865,NM: PRINT RS$;"MNU.";NM: POKE 795,0: &  GOSUB 3770: &  RETURN 
  105. 1620  &  GOSUB 1600:L =  PEEK(794): GOTO 1240
  106. 1640  &  GOSUB 1600:L = 0: GOTO 1240
  107. 1680  &  GOSUB 100:L =  PEEK(795): GOTO 1240
  108. 1690  &  SCALE= HM: PRINT BL$;"MSG.";NM;",A";HM: &  PRINT ,B$(61),, = HM,: GOTO 1250
  109. 1710  &  PRINT ,B$(69),,:R = 1
  110. 1720  IF WW$(R) = ""  THEN 1740
  111. 1730  &  PRINT WW$(R)
  112. 1740 R = R +1: IF R <6  THEN 1720
  113. 1750  &  PRINT : GOTO 1250
  114. 1790  ON WH GOTO 2170,2280,2980,2080,1870,1940,2010,1830
  115. 1830  &  GOSUB 900: GOTO 1250
  116. 1870  &  GOSUB 100: &  PRINT ,B$(75);: &  STR$3,NB$: &  INPUT Z$: &  GOSUB 160: IF  MID$ (M$(Z),81,1) = "P"  THEN Z$ = " ": GOTO 1900
  117. 1890 Z$ = "P"
  118. 1900  &  MID$ Z$,M$(Z),81,1: GOTO 1250
  119. 1940  &  GOSUB 100: &  PRINT ,B$(76);: &  STR$3,NB$: &  INPUT Z$: &  GOSUB 160: IF  MID$ (M$(Z),80,1) = "P"  THEN Z$ = " ": GOTO 1970
  120. 1960 Z$ = "P"
  121. 1970  &  MID$ Z$,M$(Z),80,1: GOTO 1250
  122. 2010  &  GOSUB 100: &  PRINT ,B$(77);: &  STR$3,NB$: &  INPUT Z$: &  GOSUB 160: IF  MID$ (M$(Z),82,1) = "P"  THEN Z$ = " ": GOTO 2040
  123. 2030 Z$ = "P"
  124. 2040  &  MID$ Z$,M$(Z),82,1: GOTO 1250
  125. 2080  IF  MID$ (NM$,1,1) = "#"  THEN  &  PRINT ,B$(80),,: GOTO 1250
  126. 2085  IF W% = 1  THEN L = 3: GOTO 1240
  127. 2090  &  GOSUB 4300: &  PRINT ,B$(72),,: &  ABSHM: &  LENZ: IF Z <10  OR Z >4095  THEN 2480
  128. 2120 J = MM +1: &  MID$ "P",M$(J),82,1: GOTO 2860
  129. 2170  IF  MID$ (NM$,1,1) = "#"  THEN  &  PRINT ,B$(80),,: GOTO 1250
  130. 2175  IF W% = 1  THEN L = 3: GOTO 1240
  131. 2180  &  GOSUB 4300: POKE 793,7: &  TAN PEEK(836),PH$: PRINT CH$;PH$;"/BBS.2"
  132. 2280  &  GOSUB 100: &  PRINT ,B$(4);: &  STR$3,NB$: &  INPUT Z$: &  GOSUB 160: IF  MID$ (M$(Z),56,20) =  MID$ (NM$,22,20)  THEN 2310
  133. 2300  &  GOSUB 1100: IF SL <M1  THEN  &  PRINT ,B$(35),: GOTO 1250
  134. 2310  &  GOSUB 830: &  GOSUB 900:R =  VAL( MID$ (NM$,87,3)):R = R -1: IF R <0  THEN R = 0
  135. 2320 Z$ =  RIGHT$("000" + STR$(R),3): &  MID$ Z$,NM$,87,3: &  STORE NM$: &  PRINT ,B$(22),: GOTO 1250
  136. 2370  GOTO 1250
  137. 2480  &  GOSUB 670: &  PRINT ,B$(36),:ED% = 0:L = 0: GOTO 1240
  138. 2860  IF SP% = 1  THEN  &  PRINT ,B$(80);: &  USRX: ON X GOTO 2862,2863
  139. 2861  GOTO 2865
  140. 2862  &  MID$ "P",M$(J),80,1: GOTO 2865
  141. 2863  &  MID$ "X",M$(J),80,1
  142. 2865  &  PEEK777,X:X = X +1: &  POKE 777,X: &  MID$  RIGHT$("00000" + STR$(X),5),M$(J),1,5: &  PRINT ,B$(74): IF LP <50  THEN LP = LP +1:Z$ = "0": &  MID$ Z$,M$(J),76,1: GOTO 2900
  143. 2890 HP = HP +1:Z$ = "1": &  MID$ Z$,M$(J),76,1
  144. 2900  &  GOSUB 3150:MM = J:R =  VAL( MID$ (NM$,87,3)):R = R +1:Z$ =  RIGHT$("000" + STR$(R),3): &  PEEK798,R:R = R +1: &  POKE 798,R: &  MID$ PP$,M$(J),81,1: IF SP% = 0  THEN  &  MID$ P1$,M$(J),80,1
  145. 2930  &  MID$ Z$,NM$,87,3: &  STORE NM$: &  GOSUB 900: &  TAN PEEK(839),PH$: PRINT BS$;PH$;"/PAGE.3": &  PRINT ,B$(21),: POKE 813,255: GOTO 1240
  146. 2980  &  PRINT ,B$(70);: &  STR$2,"090": &  INPUT Z$: &  GOSUB 160: &  GOSUB 320: ON G GOTO 3000: GOTO 3090
  147. 3000  IF  MID$ (M$(Z),82,1) = "P"  THEN  &  PRINT ,B$(73): GOTO 2980
  148. 3010  &  NEXT M$(Z),R: POKE 793,8: ON R = 1 GOTO 635: &  TAN PEEK(836),PH$: PRINT CH$;PH$;"/BBS.2"
  149. 3090  &  PRINT ,B$(71),: GOTO 1250
  150. 3150  PRINT BS$;"B.";Z$;"/B."; MID$ (M$(J),1,5);",A";HM;",L";Z: &  GOSUB 670: &  RETURN 
  151. 3190  ON WH GOTO 3230,3270,3440,3310,3350
  152. 3230 C = 1: &  GOSUB 1180: GOTO 1240
  153. 3270 C =  -1: &  GOSUB 1180: GOTO 1240
  154. 3310  &  GOSUB 750:C = 1: &  PRINT ,B$(30),,: &  GOSUB 1190: GOTO 1240
  155. 3350 Z = 1: &  PRINT ,B$(30),,
  156. 3360  IF MK%(Z) = 1  THEN  &  GOSUB 590
  157. 3370 Z = Z +1: IF Z < = MM  THEN 3360
  158. 3380  GOTO 1250
  159. 3440  &  GOSUB 100: &  PRINT ,B$(62);: &  STR$3,NB$: &  INPUT Z$: &  GOSUB 160: &  GOSUB 590: GOTO 3440
  160. 3490  ON WH GOTO 3530,3580,3620,3670
  161. 3530 W = 1: GOTO 230
  162. 3580 W =  -1: GOTO 230
  163. 3620  &  GOSUB 100: &  PRINT ,B$(63);: &  STR$3,NB$: &  INPUT Z$: &  GOSUB 160: &  GOSUB 380: GOTO 3620
  164. 3670  &  GOSUB 750:W = 1: GOTO 240
  165. 3690  IF RS$ = ""  THEN  &  AT  PEEK(839),A: PRINT  CHR$(4);"RESTORE MNU.0"
  166. 3695  &  SCALE= HM: RETURN 
  167. 3770  &  RECALL NM$:WD =  VAL( MID$ (NM$,83,3)) -1:MX =  INT(4000/(WD +1)): IF MX >99  THEN MX = 99
  168. 3790  &  RETURN 
  169. 3800  &  ONERR  = ER,LI: ONERR  GOTO 3800
  170. 3810  ON ER = 253 GOTO 1480: IF ER < >255  THEN 4020
  171. 3830  &  PRINT ,,"Please wait...",,: HOME 
  172. 3840  PRINT "[Q]UIT THE PROGRAM": PRINT "[U]TILITIES": PRINT "[S]YSTEM UTILITIES": PRINT "[R]ETURN TO PROGRAM": PRINT "[T]OGGLE CLOCK": PRINT "[O]FF HANG-UP": PRINT "COMMAND? ": GET Z$: &  SGNZ$: &  INT"QRUSTO",Z$,Z: ON Z GOTO 3920,3970,4000,4010,3930,3950: GOTO 3830
  173. 3920  END 
  174. 3930  IF  PEEK(813) = 0  THEN  POKE 813,255: &  PRINT "Clock is on...",,,: GOTO 3840
  175. 3940  POKE 813,0: &  PRINT "Clock is off..",,,: GOTO 3840
  176. 3950  GOTO 1480
  177. 3970  &  GOTO LI
  178. 4000  POKE 793,5:P =  PEEK(836): &  GOSUB 710: PRINT RN$;"LOG"
  179. 4010 P =  PEEK(837): &  GOSUB 710: PRINT RN$;"SYS.UTIL"
  180. 4020  &  PRINT ,"Error number ";ER;" in line ";LI,"Recycling to top!":ER =  PEEK(847):ER = ER +1: POKE 847,ER: IF ER >5  THEN  END 
  181. 4030  RUN 
  182. 4300  &  GOSUB 940:J = MM +1:M$(J) = M$(0) +"": &  MID$ " ",M$(J),1,80: &  MID$  MID$ (NM$,58,3),M$(J),77,3: &  MID$  MID$ (NM$,22,20),M$(J),56,20: &  POS1,DT,TM:DT$ =  RIGHT$("000000" + STR$(DT),6):TM$ =  RIGHT$("0000" + STR$(TM),4): &  MID$ DT$,M$(J),6,6: &  MID$ TM$,M$(J),12,2: &  STR$20,DF$: &  CLEAR : &  PRINT ,B$(23);: &  INPUT I$: IF I$ = ""  THEN 2480
  183. 4380  &  MID$ I$,M$(J),16,20: IF  PEEK(793) = 1  THEN  &  MID$  MID$ (M$(E1),56,20),M$(J),36,20: GOTO 4550
  184. 4400  &  STR$20,DF$: &  CLEAR : &  PRINT B$(24);: &  INPUT W$: IF W$ = ""  THEN 2480
  185. 4420 R =  LEN(W$):X = 1
  186. 4430  IF X >R  THEN 4460
  187. 4440  IF  MID$ (W$,X,1) <"0"  OR  MID$ (W$,X,1) >"9"  THEN 4530
  188. 4450 X = X +1: GOTO 4430
  189. 4460  ONERR  GOTO 4480
  190. 4465 F$ = "/FIL.USR":R =  VAL(W$): &  TAN PEEK(839),PH$: PRINT OP$;PH$;F$;",L128": PRINT RD$;PH$;F$;",R";R: INPUT "";Z$: PRINT CL$;PH$;F$: GOTO 4500
  191. 4480  PRINT CL$: &  ONERR : ONERR  GOTO 3800
  192. 4490  &  PRINT ,,B$(33),,: GOTO 4400
  193. 4500  ONERR  GOTO 3800
  194. 4510  &  PRINT ,B$(48);@ MID$ (Z$,22,20): &  PRINT B$(47);: &  USRR: ON R GOTO 4520,4400
  195. 4520 W$ =  MID$ (Z$,22,20)
  196. 4530  &  SGNW$: &  MID$ W$,M$(J),36,20: &  PRINT ,,B$(13);I$,B$(14);@W$,B$(47);: &  USRZ: ON Z GOTO 4550,4300
  197. 4550 I = 1:W% = 1:L = 3:T = T(L):M = M(L):B = B(L):F = 0: POKE 813,0: &  CLEAR : &  RETURN